home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Night Owl 7
/
Night Owl Shareware (NOPV7)(Night Owl Publisher Inc.)(1992).bin
/
038a
/
bash1_12.arj
/
BASH1-12.TAR
/
bash-1.12
/
examples
/
functions
/
ksh-compat.~1~
< prev
next >
Wrap
Text File
|
1991-12-31
|
3KB
|
154 lines
#
# ksh-compat -- functions and aliases to provide the beginnings of a ksh
# environment for bash.
#
# Chet Ramey
# chet@ins.CWRU.Edu
#
#
# These are definitions for the ksh compiled-in `exported aliases'. There
# are others, but we already have substitutes for them: "history", "type",
# and "hash".
#
alias r="fc -e -"
alias functions="typeset -f"
alias integer="typeset -i"
alias nohup="nohup "
alias true=":"
alias false="let 0"
#
# An almost-ksh compatible `whence' command. This is as hairy as it is
# because of the desire to exactly mimic ksh (whose behavior was determined
# empirically).
#
# This depends somewhat on knowing the format of the output of the bash
# `builtin type' command.
#
whence ()
{
local vflag
local path
vflag=
path=
if [ "$#" = "0" ]; then
echo "whence: argument expected"
return 1
fi
case "$1" in
-v) vflag=1
shift 1
;;
-*) echo "whence: bad option: $1"
return 1
;;
*) ;;
esac
if [ "$#" = "0" ]; then
echo "whence: bad argument count"
return 1
fi
for cmd; do
if [ "$vflag" ]; then
echo $(builtin type $cmd | sed 1q)
else
path=$(builtin type -path $cmd)
if [ "$path" ]; then
echo $path
else
case "$cmd" in
/*) echo ""
;;
*)
case "$(builtin type -type $cmd)" in
"") echo ""
;;
*) echo "$cmd"
;;
esac
;;
esac
fi
fi
done
return 0
}
#
# For real ksh homeboy fanatics, redefine the `type' builtin with a ksh
# version.
#
#type()
#{
# whence -v "$*"
#}
cd ()
{
case $# in
0) builtin cd "$HOME" ;;
1) builtin cd "$@" ;;
2) old="$1"
new="$2"
dir=$(echo "$PWD" | sed "s:$old:$new:g")
case "$dir" in
"$PWD") echo "bash: cd: bad substitution" >&2
;;
*) echo "$dir"
builtin cd "$dir"
;;
esac
;;
*) echo "cd: wrong arg count" >&2
;;
esac
}
#
# ksh print emulation
#
# print [-Rnprsu[n]] [arg ...]
#
# - end of options
# -R BSD-style -- only accept -n, no escapes
# -n do not add trailing newline
# -p no-op (no coprocesses)
# -r no escapes
# -s no-op (print to the history file)
# -u n redirect output to fd n
#
print()
{
local eflag=-e
local nflag=
local fd=1
OPTIND=1
while getopts "Rnprsu:" c
do
case $c in
R) eflag=
;;
r) eflag=
;;
n) nflag=-n
;;
u) redir=">&$OPTARG"
fd=$OPTARG
;;
p|s) ;;
esac
done
shift $[ $OPTIND - 1 ]
echo $eflag $nflag "$@" >&$fd
}